Automatisierte statische Code-Analysen des Quelltextes eines Software-Projekts helfen, bestimmte Arten von Fehlern frühzeitig systematisch aufzudecken. Ein etabliertes und hilfreiches Tool für diesen Anwendungsfall ist SonarQube (früher schlicht Sonar). Im folgenden kurzen Tutorial zeigen wird, wie SonarQube in wenigen Minuten eingerichtet und in einen Build eines Bamboo-Integration-Server integriert werden kann.
Was ist SonarQube?
SonarQube ist ein Werkzeug zur statischen Code-Analyse. Es untersucht Quellcode im Hinblick auf unterschiedliche Qualitätsparameter. Die Analysen betreffen bzw. umfassen unter anderem die folgenden Aspekte:
- Architektur und Software-Design
- Komplexität
- Potenzielle Fehlerquellen
- Code-Doppelungen
- Coding-Standards und Best-Practices
- Modultests
Dabei greift SonarQube auf bewährte Werkzeuge wie PMD, Checkstyle, Findbugs, Surefire und Cobertura zurück. Das Tool unterstützt neben Java (durch Plugins) auch weitere Sprachen wie z.B. Groovy, Flex, PHP, PL/SQL, C#, Cobol, .Net, Erlang und Visual Basic 6. Darüber hinaus ist SonarQube über eine Plugin-API erweiterbar. (Bestehende Plugins können über die Plugin Library eingesehen werden.)
Installation und Konfiguration von SonarQube
SonarQube kann direkt von der SonarQube.org heruntergeladen und muss anschließend entpackt werden. Um SonarQube zu starten (hier unter Linux), wechseln wir anschließend in das entsprechende betriebssystemspezifische Verzeichnis und führen SonarQube dort im bin
-Verzeichnis aus:
% ./sonar.sh start Starting SonarQube... Started SonarQube.
Der Status der SonarQube-Instanz lässt sich mit dem Befehl status
ermitteln:
% ./sonar.sh status SonarQube is running (8524).
Nun ist SonarQube im Browser unter der Adresse http://localhost:9000/ erreichbar.
Ein Login als Administrator ist in der Standardinstallation mit den Zugangsdaten admin / admin möglich:
Installation und Konfiguration des Bamboo-Plugins
Das Plugin SonarQube für Bamboo der Firma Mibex Software steht auf dem Atlassian Marketplace zur Verfügung und kann direkt über den Administrationsbereich von Bamboo heruntergeladen und installiert werden (Bamboo Administration -> Find new add-ons -> Sonar -> Sonar for Bamboo).
Die Konfiguration erfolgt in Bamboo über die Add-on-Administration (Bamboo Administrations -> Add-ons -> Sonar for Bamboo). Dort spezifizieren wir einen möglichst aussagefähigen Namen für den Server und dessen URL:
Integration in einen Bamboo-Build-Plan
Damit ist alles vorbereitet, um Sonar in einen bestehenden Build-Plan in Bamboo zu integrieren. Dazu fügen wir in der Konfiguration des entsprechenden Jobs unseres Bamboo-Plans einfach einen Sonar-Task hinzu. In unserem Fall basiert das Projekt auf dem Build-Tool Maven 3, sodass wir in der entsprechenden Auswahl den Task Sonar Maven 3 verwenden.
In unserem Beispielszenario muss an der Konfiguration des Sonar-Tasks bequemerweise nichts geändert werden.
Damit ist Sonar nun erfolgreich in unseren Bamboo-Build integriert.
Reporting im Bamboo
Ist der Build erfolgreich gelaufen, sehen wir in der Übersicht eine Verknüpfung zum entsprechenden Projekt auf dem Sonar-Server unter dem Label SonarQube analysis results:
Der verknüpfte Report in Sonar bietet dann Analysen und Einblicke, die wie im folgenden Beispiel aussehen:
Ihr Partner für individuelle Software-Projekte
Planen Sie bereits ein konkretes Software-Projekt? Oder gibt es bestimmte Prozesse in Ihrem Unternehmen, die Ihnen schon lange Kopfzerbrechen bereiten? Bremst ein System oder eine Schnittstelle Ihre Mitarbeiter auf der einen oder Ihre Kunden auf der anderen Seite aus? Dann sprechen Sie mit uns darüber! Wir freuen uns darauf, gemeinsam eine individuelle Lösung zu entwickeln – bei höchster Qualität und voller Kostenkontrolle. Wir legen größten Wert auf Erweiterbarkeit, Performanz, Skalierbarkeit, Plattformunabhängigkeit und Testbarkeit und schaffen individuelle High-End-Software-Lösungen, die sich auch im Nachhinein flexibel ausbauen und verändern lassen.
Weiterführende Infos
Code-Coverage-Metriken mit Bamboo und Clover
Individuelle Software-Entwicklung: Workflows, Branching-Modelle und Continuous Delivery
Vorgehen nach Scrum: Die beste Wahl für den Kunden, die Agentur – und das Produkt
Was agile Software-Projekte dem Kunden bringen
Der Beginn eines Happy Ends: Initialer Anforderungs-Workshop für erfolgreiche Projekte
Darum ist eine regelmäßige Kundenpräsenz beim Entwicklungsteam so sinnvoll
Mehr über die Creative-Commons-Lizenz erfahren